package go_service

// SetArgs 设置服务的命令行参数
//
// 参数:
//   args: 命令行参数列表（例如: []string{"--config", "/etc/app/config.yaml", "--port", "8080"})
//
// 返回值:
//   *Service: 返回服务实例本身，支持链式调用
//
// 示例:
//   service := NewService("nginx", "Nginx Server", "/usr/sbin/nginx")
//   service.SetArgs([]string{"-g", "daemon off;"})
func (s *Service) SetArgs(args []string) *Service {
	s.Args = args
	return s
}

// SetWorkingDir 设置服务的工作目录
//
// 参数:
//   dir: 工作目录路径（例如: "/var/lib/nginx", "/opt/myapp"）
//
// 返回值:
//   *Service: 返回服务实例本身，支持链式调用
//
// 示例:
//   service.SetWorkingDir("/var/www/html")
func (s *Service) SetWorkingDir(dir string) *Service {
	s.WorkingDir = dir
	return s
}

// SetEnv 设置服务的环境变量
//
// 参数:
//   env: 环境变量列表（例如: []string{"ENV=production", "PORT=8080", "DEBUG=true"})
//
// 返回值:
//   *Service: 返回服务实例本身，支持链式调用
//
// 示例:
//   service.SetEnv([]string{"NODE_ENV=production", "PORT=3000"})
func (s *Service) SetEnv(env []string) *Service {
	s.Env = env
	return s
}

// SetUser 设置服务的运行用户
//
// 参数:
//   user: 用户名（例如: "www-data", "nginx", "mysql"）
//
// 返回值:
//   *Service: 返回服务实例本身，支持链式调用
//
// 示例:
//   service.SetUser("www-data")
func (s *Service) SetUser(user string) *Service {
	s.User = user
	return s
}

// SetGroup 设置服务的运行用户组
//
// 参数:
//   group: 用户组名（例如: "www-data", "nginx", "mysql"）
//
// 返回值:
//   *Service: 返回服务实例本身，支持链式调用
//
// 示例:
//   service.SetGroup("www-data")
func (s *Service) SetGroup(group string) *Service {
	s.Group = group
	return s
}

// SetAutoStart 设置服务是否开机启动
//
// 参数:
//   autoStart: true表示开机启动，false表示不开机启动
//
// 返回值:
//   *Service: 返回服务实例本身，支持链式调用
//
// 示例:
//   service.SetAutoStart(true)
func (s *Service) SetAutoStart(autoStart bool) *Service {
	s.AutoStart = autoStart
	return s
}



// SetWantedBy 设置服务的目标单元
//
// 参数:
//   wantedBy: 目标单元名称（例如: "multi-user.target", "graphical.target"）
//
// 返回值:
//   *Service: 返回服务实例本身，支持链式调用
//
// 示例:
//   service.SetWantedBy("multi-user.target")
func (s *Service) SetWantedBy(wantedBy string) *Service {
	s.WantedBy = wantedBy
	return s
}

// SetAfter 设置服务的依赖服务（在哪些服务之后启动）
//
// 参数:
//   after: 依赖服务名称列表（例如: []string{"network.target", "mysql.service"})
//
// 返回值:
//   *Service: 返回服务实例本身，支持链式调用
//
// 示例:
//   service.SetAfter([]string{"network.target", "remote-fs.target"})
func (s *Service) SetAfter(after []string) *Service {
	s.After = after
	return s
}

// SetRequires 设置服务的必需服务（必须同时启动）
//
// 参数:
//   requires: 必需服务名称列表（例如: []string{"mysql.service", "redis.service"})
//
// 返回值:
//   *Service: 返回服务实例本身，支持链式调用
//
// 示例:
//   service.SetRequires([]string{"mysql.service", "redis.service"})
func (s *Service) SetRequires(requires []string) *Service {
	s.Requires = requires
	return s
}

// SetDescription 设置服务的描述信息
//
// 参数:
//   description: 服务描述（例如: "My Web Application Server", "Redis Cache Service"）
//
// 返回值:
//   *Service: 返回服务实例本身，支持链式调用
//
// 示例:
//   service.SetDescription("High Performance Web Server")
func (s *Service) SetDescription(description string) *Service {
	s.Description = description
	return s
}

// SetName 设置服务的名称
//
// 参数:
//   name: 服务名称（例如: "nginx", "mysql", "redis"）
//
// 返回值:
//   *Service: 返回服务实例本身，支持链式调用
//
// 示例:
//   service.SetName("my-web-server")
func (s *Service) SetName(name string) *Service {
	s.Name = name
	return s
}

// SetExecPath 设置服务的可执行文件路径
//
// 参数:
//   execPath: 可执行文件的完整路径（例如: "/usr/sbin/nginx", "/usr/local/bin/myapp"）
//
// 返回值:
//   *Service: 返回服务实例本身，支持链式调用
//
// 示例:
//   service.SetExecPath("/usr/local/bin/myapp")
func (s *Service) SetExecPath(execPath string) *Service {
	s.ExecPath = execPath
	return s
}
